package main

import (

	"encoding/json"
	"fmt"
	"io/ioutil"
	"math/rand"
	"os"
	"time"
)

func main() {
	var p string
	//学生被点名次数
	cmap := map[string]int{}
	//记录全班学生姓名
	name := []string{"swm", "sm", "yjx", "dlf", "xy", "lzx"}
	//读文件到cmap
	v, err := ioutil.ReadFile("./stuinfo.txt")
	json.Unmarshal(v, &cmap)
	if err != nil {
		fmt.Println("读文件出错了，错误原因是:", err)
	}else {
		fmt.Println("读文件成功")
	}
	// 初始化随机数的资源库, 如果不执行这行, 不管运行多少次都返回同样的值
	rand.Seed(time.Now().UnixNano())
	for {
		if len(name) == 0 {
			fmt.Print("全班同学都被抽到啦！")
			break
		}
			//产生一个随机数
		r := rand.Intn(len(name))
		fmt.Print("输入任意键抽同学回答，按q退出，按p清零：")
		fmt.Scanln(&p)
		if p == "q" {
			fmt.Printf("再见")
			break
		}else if p == "p" {
			fmt.Printf("清空所有学生被点名的次数")
			cmap = map[string]int{"swm": 0, "sm": 0, "yjx": 0, "dlf": 0, "xy": 0, "lzx": 0}
			break
		} else {
			cmap[name[r]] += 1
			fmt.Printf("%s同学被抽到啦 \n", name[r])
			name = append(name[:r], name[r+1:]...)
		}
		//fmt.Println(cmap)
		//写入文件
		file, _ := os.Create("./stuinfo.txt")
		data, e := json.Marshal(cmap)
		file.Write(data)
		defer file.Close()
		if e != nil{
			fmt.Println("写入文件失败，失败原因是：", e)
		}else {
			fmt.Println("写入文件成功")
		}
	}

}